/** 平衡字符串 中，'L' 和 'R' 字符的数量是相同的。
 * 给你一个平衡字符串 s，请你将它分割成尽可能多的子字符串，并满足：
 * 每个子字符串都是平衡字符串。
 * 返回可以通过分割得到的平衡字符串的 最大数量。*/

{
  // 记住第一个字符的value及数量，遇到不同的减一，知道为0输出结果
  function balance1(balanceString: string) {
    let balanceListTotal: number = 0,
      firstString: string = "",
      firstStringTotal: number = 0;
    Array.from(balanceString).forEach((item) => {
      if (firstString === "") {
        firstString = item;
        firstStringTotal = 1;
      } else {
        firstStringTotal =
          firstString === item ? firstStringTotal + 1 : firstStringTotal - 1;
      }
      if (firstStringTotal === 0) {
        // 扩展思路，只有在index为奇数时才需要判断total是否为0
        firstString = "";
        firstStringTotal = 0;
        balanceListTotal += 1;
      }
    });
    return balanceListTotal;
  }
}

{
  function balance2(balanceString: string) {
    let balanceValue: number = 0,
      balanceListTotal: number = 0;
    Array.from(balanceString).forEach((item) => {
      balanceValue =
        item === balanceString[0] ? balanceValue + 1 : balanceValue - 1;
      balanceListTotal =
        balanceValue === 0 ? balanceListTotal + 1 : balanceListTotal;
    });
    return balanceListTotal;
  }
}

{
  // 再缩减为用数组/对象代替上述的多个变量
}
